package LUCKY.Android.DataAccess;

import LUCKY.Android.BusinessEntities.EmpresaBE;

import LUCKY.Android.Util.FunctionsUtil;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.util.Log;

public class EMPRESATable  extends DataTableGIM {
	public static final String KEY_ID="ID";
	public static final String KEY_NOMBRE="NOMBRE";
	public static final String KEY_DIRECCION="DIRECCION";
	public static final String KEY_ID_ESTADO="ID_ESTADO";
	public static final String KEY_LONGITUD="LONGITUD";
	public static final String KEY_LATITUD="LATITUD";

  public static final String KEY_ROWID = "_id";
  private static final String TAG = "EMPRESATable";
  private DatabaseHelper mDbHelper;

  static final String DATABASE_TABLE = "empresa";
  static final String DATABASE_TABLE_INDICE = "indice_empresa";
  /**
   * Database creation sql statement
  */
  static final String DATABASE_CREATE = 
		"create table if not exists " + DATABASE_TABLE + " (" + KEY_ROWID + " integer primary key autoincrement, "
												+ KEY_ID + " integer, "//UNIQUE ON CONFLICT IGNORE, " 
												+ KEY_NOMBRE + " text, "
												+ KEY_DIRECCION + " text, "
												+ KEY_ID_ESTADO + " integer, "
												+ KEY_LONGITUD + " text, "
												+ KEY_LATITUD + " text, "
												
												+ "UNIQUE(" + KEY_ID  + ") ON CONFLICT IGNORE );"; //Para evitar duplicados
  
  
  
  
  static final String DATABASE_INDICE = 
			" CREATE INDEX " +DATABASE_TABLE_INDICE+ " on " + DATABASE_TABLE + " (" + KEY_ROWID + " , "
													+ KEY_ID + " , "//UNIQUE ON CONFLICT IGNORE, " 
													+ KEY_NOMBRE + " , "
													+ KEY_DIRECCION + " , "
													+ KEY_ID_ESTADO + " , "
													+ KEY_LONGITUD + " , "
													+ KEY_LATITUD  +");"; 
	  

  
 
  /**
   * Constructor - takes the context to allow the database to be
   * opened/created
   *
   * @param ctx the Context within which to work
   */
  public EMPRESATable(Context ctx) {
	  mDbHelper = new DatabaseHelper(ctx);
  }
 
  public void open() throws SQLException {
    mDb = mDbHelper.getWritableDatabase();
  }
 
  public void close() {
    mDbHelper.close();
  }
  

 
  public long create(EmpresaBE empresa) {
    Log.i(TAG, "Inserting record...");
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_ID,empresa.id);
    initialValues.put(KEY_NOMBRE,empresa.nombre);
    initialValues.put(KEY_DIRECCION,empresa.direccion);
    initialValues.put(KEY_ID_ESTADO,empresa.id_estado);
    initialValues.put(KEY_LONGITUD,empresa.longitud);
    initialValues.put(KEY_LATITUD,empresa.latitud);
    return mDb.insert(DATABASE_TABLE, null, initialValues);
  }
 
  public boolean delete(String id) {
    return mDb.delete(DATABASE_TABLE, KEY_ID + "=" + id, null) > 0;
  }
  
  public boolean deleteAll() {
	    return mDb.delete(DATABASE_TABLE, null, null) > 0;
  }

  
  public Cursor fetchAll() throws SQLException {
	   
	String cols = FunctionsUtil.obtenerColumnas(mDb ,DATABASE_TABLE,false);
	String sql="select  " + cols + "   from "+DATABASE_TABLE+ ";";
	  	
	Cursor mCursor = mDb.rawQuery(sql, null);  
	  
	if (mCursor != null) {
		mCursor.moveToFirst();
	}
	return mCursor;
	
  }
 
  public Cursor fetch(int id) throws SQLException {
   
	  String cols = FunctionsUtil.obtenerColumnas(mDb ,DATABASE_TABLE,false);
	  String sql="select  " + cols + "   from  "+DATABASE_TABLE+ " where " + KEY_ID + " = "    + id   +";";
	  	
	  	Cursor mCursor = mDb.rawQuery(sql, null);  
	  
	if (mCursor != null) {
		mCursor.moveToFirst();
	}
	return mCursor;
	
  }
  
  public Cursor fetchWhere(String where) throws SQLException {
	  String cols = FunctionsUtil.obtenerColumnas(mDb ,DATABASE_TABLE,false);
		String sql="select  " + cols + "   from "+DATABASE_TABLE+ ";";

		  if (where!=null && !where.trim().equals("")) sql +=" WHERE " + where; 
		  	
		Cursor mCursor = mDb.rawQuery(sql, null);  
		  
		if (mCursor != null) {
			mCursor.moveToFirst();
		}
		return mCursor;
	 
	  }
 
 
  public boolean update(int id,String nombre,String direccion,int id_estado,String longitud,String latitud) {
    ContentValues args = new ContentValues();
    args.put(KEY_ID,id);
    args.put(KEY_NOMBRE,nombre);
    args.put(KEY_DIRECCION,direccion);
    args.put(KEY_ID_ESTADO,id_estado);
    args.put(KEY_LONGITUD,longitud);
    args.put(KEY_LATITUD,latitud);
    
    return mDb.update(DATABASE_TABLE, args, KEY_ID + "=" + id , null) > 0;
  }

}